home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / utils / file / logiso.000 / logiso / Utils / RCS / check_links,v next >
Encoding:
Text File  |  1995-03-24  |  5.0 KB  |  268 lines

  1. head    1.6;
  2. access;
  3. symbols
  4.     VER_0_3:1.6
  5.     VER_0_2:1.5;
  6. locks; strict;
  7. comment    @# @;
  8.  
  9.  
  10. 1.6
  11. date    95.03.24.11.43.35;    author coulter;    state Exp;
  12. branches;
  13. next    1.5;
  14.  
  15. 1.5
  16. date    95.03.10.02.42.22;    author coulter;    state Exp;
  17. branches;
  18. next    1.4;
  19.  
  20. 1.4
  21. date    95.02.19.16.06.41;    author coulter;    state Exp;
  22. branches;
  23. next    1.3;
  24.  
  25. 1.3
  26. date    95.02.19.10.09.34;    author coulter;    state Exp;
  27. branches;
  28. next    1.2;
  29.  
  30. 1.2
  31. date    95.02.19.08.20.38;    author coulter;    state Exp;
  32. branches;
  33. next    1.1;
  34.  
  35. 1.1
  36. date    95.02.18.08.36.38;    author coulter;    state Exp;
  37. branches;
  38. next    ;
  39.  
  40.  
  41. desc
  42. @script to search disk for links to update
  43. @
  44.  
  45.  
  46. 1.6
  47. log
  48. @Checkin version for 0.3 distribution.
  49. @
  50. text
  51. @#! /bin/ksh
  52. USAGE='USAGE: check_links [ -d config_prefix ] [ ROOT_DIR ]
  53.    Check for links below ROOT_DIR which should be replaced and replace
  54.    them.
  55.    Uses ISOFS_UTIL_DIR and ${ISOFS_UTIL_DIR}/${CONFIG_PREFIX}config to set 
  56.    MOUNT_PATH and MAP_TO_PATH
  57. '
  58. # (C) Copyright 1995 by Michael Coulter.  All rights reserved.
  59.  
  60. # Process parameters
  61.  
  62.    CONFIG_PREFIX=""
  63.    if [ $# -ge 2 -a "$1" = "-d" ]
  64.    then
  65.       shift  # done with -d
  66.       CONFIG_PREFIX="$1"; shift
  67.    fi
  68.    if [ $# -gt 1 ]
  69.    then
  70.       echo "$USAGE" >&2
  71.       echo "Too many arguments." >&2
  72.       exit 1
  73.    fi
  74.    ROOT_DIR="/"
  75.    if [ $# -eq 1 ]
  76.    then
  77.       ROOT_DIR="$1"; shift
  78.    fi
  79.  
  80. # Set variables
  81.  
  82.    ISOFS_UTIL_DIR="${ISOFS_UTIL_DIR:-/usr/src/linux/fs/isofs/Utils}"
  83.    . "$ISOFS_UTIL_DIR/ksh_fns"
  84.    .  "${ISOFS_UTIL_DIR}/${CONFIG_PREFIX}config"
  85.    export ISOFS_UTIL_DIR
  86.  
  87. # Of the link files, find those which point to a file below $MOUNT_PATH and
  88. # for which the equivalent link exists below $MAP_TO_PATH
  89.  
  90. HERE="$PWD"
  91.  
  92. # Do it
  93.  
  94.    echo "Checking links below $ROOT_DIR"
  95.  
  96.    ${FIND_LINKS} "$ROOT_DIR" | while read FILE REST
  97.    do
  98.       check_one_link "$FILE" "$MOUNT_PATH" "$MAP_TO_PATH"
  99.    done
  100. @
  101.  
  102.  
  103. 1.5
  104. log
  105. @Checkin files modified to make version 0.2
  106. @
  107. text
  108. @d8 1
  109. @
  110.  
  111.  
  112. 1.4
  113. log
  114. @Checkpoint version 0.1
  115. @
  116. text
  117. @d2 1
  118. a2 1
  119. USAGE='USAGE: check_links [ ROOT_DIR ]
  120. d5 1
  121. a5 1
  122.    Uses ISOFS_UTIL_DIR and ${ISOFS_UTIL_DIR}/config to set 
  123. a8 7
  124. # Set variables
  125.  
  126.    ISOFS_UTIL_DIR="${ISOFS_UTIL_DIR:-/usr/src/linux/fs/isofs/Utils}"
  127.    . "$ISOFS_UTIL_DIR/ksh_fns"
  128.    .  "${ISOFS_UTIL_DIR}/config"
  129.    export ISOFS_UTIL_DIR
  130.  
  131. d11 6
  132. d28 7
  133. @
  134.  
  135.  
  136. 1.3
  137. log
  138. @Checkpoint file.  About to introduce check_one_link.
  139. @
  140. text
  141. @d41 1
  142. a41 28
  143.       LINK="$(ls -l "$FILE" 2> /dev/null | cut -c56-500 | sed -e 's/^.* //')"
  144.       ##echo "check: LINK is $LINK"
  145.       if [ "$LINK" != "${LINK#$MOUNT_PATH}" ]
  146.       then
  147.      # link points at CD.  It should not be a link file there.
  148.      DEST="$(follow_link "$LINK")"
  149.      ##echo "check: DEST is $DEST"
  150.      if [ "$DEST" = "${DEST#$MOUNT_PATH}" ]
  151.      then
  152.         # The destination of the link is not on the CD.  Replace the
  153.         # link
  154.            echo "check_links: Replace link at $FILE with $DEST"
  155.            replace_link "$FILE" "$DEST"
  156.            exit 0
  157.      fi
  158.      ROOTED="${DEST#${MOUNT_PATH}}"
  159.      if [ "$MAP_TO_PATH" = "/" ]
  160.      then
  161.         EQUIV="$ROOTED"
  162.      else
  163.         EQUIV="${MAP_TO_PATH}$ROOTED"
  164.      fi
  165.      if [ "$EQUIV" != "$FILE" ]
  166.      then
  167.         echo "check_links: Replace link at $FILE with $EQUIV"
  168.         replace_link "$FILE" "$EQUIV"
  169.      fi
  170.       fi # LINK is link under MOUNT_PATH
  171. @
  172.  
  173.  
  174. 1.2
  175. log
  176. @Checkpoint file.
  177. @
  178. text
  179. @d37 1
  180. a37 1
  181.    ##echo "Checking links below $ROOT_DIR"
  182. d48 9
  183. d59 1
  184. a59 1
  185.         EQUIV="${DEST#${MOUNT_PATH}}"
  186. d61 1
  187. a61 1
  188.         EQUIV="${MAP_TO_PATH}${DEST#${MOUNT_PATH}}"
  189. d63 1
  190. a63 2
  191.      ##echo "check: at 1 EQUIV is $EQUIV"
  192.      if [ -L "$LINK" ]
  193. d65 3
  194. a67 22
  195.         if [ -L "$EQUIV" ]
  196.         then
  197.            EQUIV="$(follow_link "$EQUIV")"
  198.         fi
  199.         if [ "$EQUIV" = "${EQUIV#$MOUNT_PATH}" -a -e "$EQUIV" ]
  200.         then
  201.            ##echo "check: Replace link at $FILE with $EQUIV"
  202.            replace_link "$FILE" "$EQUIV"
  203.         fi
  204.      else
  205.         if [ "$MAP_TO_PATH" = "/" ]
  206.         then
  207.            EQUIV="${LINK#${MOUNT_PATH}}"
  208.         else
  209.            EQUIV="${MAP_TO_PATH}/${LINK#${MOUNT_PATH}}"
  210.         fi
  211.         if [ -e "$EQUIV" -a ! -L "$EQUIV" ]
  212.         then
  213.            ##echo "check: Replace $FILE with link to eqiv $EQUIV"
  214.            replace_link "$FILE" "$EQUIV"
  215.         fi
  216.      fi # else EQUIV is not link
  217. @
  218.  
  219.  
  220. 1.1
  221. log
  222. @Checkpoint version before fixing /usr/bin install
  223. @
  224. text
  225. @d2 6
  226. d12 1
  227. d16 14
  228. a33 1
  229. MOUNT_PATH=/system_cd
  230. d35 9
  231. a43 7
  232. find_links | while read FILE REST
  233. do
  234.    LINK="$(ls -l "$FILE" 2> /dev/null | cut -c56-500 | sed -e 's/^.* //')"
  235.    if [ "$LINK" != "${LINK#$MOUNT_PATH}" ]
  236.    then
  237.       # link points at CD.  It should not be a link file there.
  238.       if [ -L "$LINK" ] 
  239. d45 5
  240. a49 3
  241.          DEST="$(follow_link "$LINK")"
  242.          if [ "$MAP_TO_PATH" = "" ]
  243.          then
  244. d52 29
  245. a80 21
  246.         EQUIV="${MAP_TO_PATH}/${DEST#${MOUNT_PATH}}"
  247.          fi
  248.          if [ -L "$EQUIV" ]
  249.          then
  250.             EQUIV="$(follow_link "$EQUIV")"
  251.          fi
  252.          if [ "$EQUIV" = "${EQUIV#$MOUNT_PATH}" -a -e "$EQUIV" ]
  253.          then
  254.         echo "check: Replace link at $FILE with $EQUIV"
  255.             replace_link "$FILE" "$EQUIV"
  256.          fi
  257.       else
  258.          EQUIV="${LINK#$MOUNT_PATH}"
  259.          if [ -e "$EQUIV" -a ! -L "$EQUIV" ]
  260.          then
  261.             echo "check: Replace $FILE with link to eqiv $EQUIV"
  262.             replace_link "$FILE" "$EQUIV"
  263.          fi
  264.       fi
  265.    fi
  266. done
  267. @
  268.